/***********************************************************
*  File: tuya_key_api.h 
*  Author: anby
*  Date: 20160629
***********************************************************/
#ifndef _TUYA_KEY_API_H
#define _TUYA_KEY_API_H

#include "key.h"

/*************************************************************************************
函数功能: 按键初始化
输入参数: 无
输出参数: 无
返 回 值: 参照返回值列表
备    注: 无
*************************************************************************************/
OPERATE_RET tuya_kb_init(VOID);

/*************************************************************************************
函数功能: 设置是否支持连击按键计数即SEQ_KEY类型
输入参数: enable
          <1>TRUE  支持连击按键计数事件，可触发SEQ_KEY类型事件
          <2>FALSE 不支持连击按键计数，仅支持触发NORMAL_KEY、LONG_KEY事件
输出参数: 无
返 回 值: 无
备    注: 如果不调用该接口则默认所有的按键处理均支持连击按键计数功能
*************************************************************************************/
VOID tuya_set_kb_seq_enable(IN BOOL enable);

/*************************************************************************************
函数功能: 设置按键高电平有效
输入参数: is_high
          TRUE  高电平有效
          FALSE 低电平有效
输出参数: 无
返 回 值: 无
备    注: 默认低电平有效
*************************************************************************************/
VOID tuya_set_kb_detect_high_valid(BOOL is_high);

/*************************************************************************************
函数功能: 设置按键触发类型
输入参数: gpio_no:0-16分别对应IO0-IO16
          trig_ty:
          <1> KEY_UP_TRIG    弹起触发
          <2> KEY_DOWN_TRIG  按下触发，仅支持NORMAL_KEY以及LONG_KEY
          down_trig_cont:
          <1> 仅当trig_ty == KEY_DOWN_TRIG 时有效
          <2> TURE  如果用户一直按着不放，则间隔400ms会再次出发NORMAL_KEY事件
          <3> FALSE 用户一直按着不放，仅触发一次 
输出参数: 无
返 回 值: 无
备    注: 默认如果不调用此函数，则按键事件均为弹起触发类型
*************************************************************************************/
VOID tuya_set_kb_trig_type(IN CONST INT gpio_no,IN CONST KEY_TRIGGER_TP_E trig_ty,IN CONST BOOL down_trig_cont);

/*************************************************************************************
函数功能: 注册按键回调函数
输入参数: gpio_no:0-16分别对应IO0-IO16
          long_key_time:长按键触发时间(ms)，如设置为0则屏蔽长按键
          call_back按键回调函数,
          VOID(*)(INT gpio_no,PUSH_KEY_TYPE_E type,INT cnt)
          gpio_no GPIO序号
          type 按键类型
          <1> NORMAL_KEY 普通按键
          <2> SEQ_KEY
              说明:连击按键,仅对弹起触发的按键类型有效,
                   比如快速按下两次回调参数type == SEQ_KEY,cnt == 2(cnt表示连续点击次数)
          <3> LONG_KEY   长按按键
          cnt 按键次数
输出参数: 无
返 回 值: 参照返回值列表
备	 注: 无	
*************************************************************************************/
OPERATE_RET tuya_kb_reg_proc(IN CONST INT gpio_no,IN CONST INT long_key_time,IN CONST KEY_CALLBACK call_back);

#endif

